package main

import (
	"fmt"
)

const (
	mutexLocked           = 1 << iota // 1 0001 含义：用最后一位表示当前对象锁的状态，0-未锁住 1-已锁住
	mutexWoken                        // 2 0010 含义：用倒数第二位表示当前对象是否被唤醒 0-唤醒 1-未唤醒
	mutexStarving                     // 4 0100 含义：用倒数第三位表示当前对象是否为饥饿模式，0为正常模式，1为饥饿模式。
	mutexWaiterShift      = iota      // 3，从倒数第四位往前的bit位表示在排队等待的goroutine数
	starvationThresholdNs = 1e6       // 1ms
)

func main() {
	fmt.Printf("%08b\n", mutexLocked)
	fmt.Printf("%08b\n", mutexWoken)
	fmt.Printf("%08b\n", mutexStarving)
	fmt.Printf("%08b\n", mutexWaiterShift)
	fmt.Printf("%08b\n", starvationThresholdNs)
}
